package process
import (
	"fmt"
)

//由于UserMgr实例在服务器端有且只有一个
//因为很多地方都会使用到，因此定义为全局变量
var (
	userMgr *UserMgr
)

type UserMgr struct{
	onlineUsers map[int]*UserProcess
}

//完成对userMgr的初始化工作
func init(){
	userMgr = &UserMgr{
		onlineUsers : make(map[int]*UserProcess,1024),
	}
}
//完成对onlineUsers的添加
func (this *UserMgr)AddonlineUser(up *UserProcess){
	this.onlineUsers[up.UserId] = up
}

//完成对onlineUsers的删除
func (this *UserMgr)DelonlineUser(userId int){
	delete(this.onlineUsers,userId)
}

//查询
func (this *UserMgr)GetallonlineUser() map[int]*UserProcess{
	return this.onlineUsers
}

//根据id返回对应的UserProcess值
func (this *UserMgr)GetOnlineUserById(userId int) (up *UserProcess,err error){
	up,ok  := this.onlineUsers[userId]
	if !ok{  //说明当前用户不在线
		err = fmt.Errorf("用户%d 不存在",userId)
		return
	}
	return
}	